package epoch.game.core.distr.call;

import epoch.game.core.function.IFunc1;
import epoch.game.core.function.IFunc2;
import epoch.game.core.support.Param;

/**
 * 回调结果
 * @author will
 * @date 2016年4月12日 下午1:16:58
 */
public class CallResult {
	
	public long callId;
	/** 回调方法 */
	public Object callbackMethod;
	/** 回调超时时间 */
	public long timeOut;
	/** 参数 */
	public CallContext context;
	/** 是否需要处理超时 */
	public boolean handleTimeOut = false;
	//开始监听的时间
	public long listenTime=0l;
	//调用信息
	public String callerInfo;
	
	@SuppressWarnings("unchecked")
	public <R> void onResult(R result){
		if(context==null){
			((IFunc1<R>)callbackMethod).apply(result);
		}else{
			((IFunc2<Param, R>)callbackMethod).apply(context,result);
		}
	}	

}
